package com.kpmg.datalake.reportanalysis.dao;

import com.kpmg.datalake.common.model.DimInfo;
import com.kpmg.datalake.reportanalysis.vo.ReportModel;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 报表分析服务Mapper
 * @author Tony
 */
@Repository
public interface ReportMapper {
	
	/**
	 * 查询科目信息
	 */
	public List<DimInfo> initSbj(@Param("queryParam") String queryParam);
	
	/**
	 * 查询部门信息
	 */
	public List<DimInfo> initDept(@Param("queryParam") String queryParam);
	
	/**
	 * 查询交易对手信息
	 */
	public List<DimInfo> initCst(@Param("queryParam") String queryParam);
	
	/**
	 * 查询组团信息
	 */
	public List<DimInfo> initPrj(@Param("queryParam") String queryParam);
	
	/**
	 * 集团查询维度汇总表
	 */
	public List<Map<String, Object>> queryParCorpSmy(@Param("report") ReportModel report);
	
	/**
	 * 子公司查询维度汇总表
	 */
	public List<Map<String, Object>> querySubCorpSmy(@Param("report") ReportModel report);
	
	/**
	 * 集团部门/交易对手/组团维度钻取
	 */
	public List<Map<String, Object>> queryParCorpSmyByDim(@Param("report") ReportModel report);
	
	/**
	 * 单个公司部门/交易对手/组团维度钻取
	 */
	public List<Map<String, Object>> querySubCorpSmyByDim(@Param("report") ReportModel report);
	
	/**
	 * 数据新增
	 */
	public int insertData(@Param("tableName") String tableName, @Param("param") Map<String, String> param);
	
	/**
	 * 数据更新
	 */
	public int updateData(@Param("tableName") String tableName, @Param("param") Map<String, String> param,
			@Param("condition") Map<String, String> condition);
	
	/**
	 * 数据删除
	 */
	public int deleteData(@Param("tableName") String tableName, @Param("condition") Map<String, String> condition);
	
	/**
	 * 获取用户报表模板信息
	 */
	public List<Map<String, Object>> queryUserTemplates(@Param("userId") String userId, @Param("filter") String filter);
	
	/**
	 * 查询下钻维度信息
	 */
	//public List<Map<String, Object>> queryDimDrill(@Param("smyRcrdId") String smyRcrdId);

	/**
	 * 根据id获取
	 * @param filter
	 * @return
	 */
	public Map<String, Object> queryUserHistory( @Param("filter") String filter);


	public List<DimInfo> queryOtherDim(@Param("tableName") String tableName, @Param("queryParam") String queryParam);
	
}
